<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Symbol在类与缓存器中的使用</title>
</head>
<body>
    
</body>
<script>
    /*
        现在一些公司的开发模式基本都是前后端分离的开发模式  前端也都是以组件化的形式开发
            所以经常会定义一个缓存器 有点类似与Vuex  
                下面用类来简单模拟一下
    */
    class cache{
        static data = {}
        static insert(name,value){
            // 这里有个知识点 就是为什么要使用data[name]  而不是 data.name  原因是 如果在对象存对象要使用[] 包裹 否则都是一个变量  就会一直是被覆盖的状态
            return this.data[name] = value
        }
        static get(name){
            return this.data[name]
        }
    }
    cache.insert('jimmy','man')
    cache.insert('jimmy','woman')
    console.log(cache.get('jimmy'))   //woman
    /*
        由以上例子我们可以知道  当出现重名的时候  就会出现覆盖的情况
            这时候我们使用Symbol就可以了
    */
    let user2 = {
        sex:'woman',
        key:Symbol()
    }
    let user1 = {
        sex:'man',
        key:Symbol()
    }
    cache.insert(user2.key,user2)
    cache.insert(user1.key,user1)
    
    console.log(cache.get(user1.key))

</script>
</html>